package com.cg.asm.body.service.user;

import com.cg.asm.body.domain.dto.user.UserInfoDTO;
import com.cg.asm.body.domain.vo.user.UserEditVO;
import com.cg.asm.body.domain.vo.user.UserPagedVO;
import com.cg.asm.body.domain.vo.user.UserRoleVO;
import com.cg.asm.client.exception.MybatisExample;
import com.github.pagehelper.PageInfo;

import java.util.List;

public interface IUserInfoService {

    /**
     * 查询用户列表信息（分页）
     *
     * @param mybatisExample
     * @return
     */
    PageInfo<UserPagedVO> selectByUserInfo(MybatisExample mybatisExample);

    /**
     * 验证用户唯一性
     *
     * @param username
     */
    boolean userIsUnique(String username);

    /**
     * 增加用户信息
     *
     * @param userInfoDTO
     */
    void saveUser(UserInfoDTO userInfoDTO);

    /**
     * 根据用户Id，查询编辑用户的详细信息
     *
     * @param userId
     * @return
     */
    UserEditVO userEditInfo(String userId);

    /**
     * 保存编辑的用户信息
     *
     * @param userInfoDTO
     */
    void saveEditUser(UserInfoDTO userInfoDTO);

    /**
     * 根据用户名称删除用户信息
     *
     * @param ids
     */
    void delUser(String[] ids);

    /**
     * 保存选择的角色
     *
     * @param userRoleVO
     */
    void saveUserRole(UserRoleVO userRoleVO);

    /**
     * 根据用户Id查询用户角色信息
     *
     * @param userId
     * @return
     */
    List<String> roleByUser(String userId);

    /**
     * 保存上传的头像
     * @param upAvatar
     * @param userId
     */
    void saveUpAvatar(String upAvatar,String userId);

    /**
     * 根据用户Id更新用户状态
     * @param ids
     * @param status
     */
    void updateStatus(String[] ids, String status);

    /**
     * 根据用户Id重置密码
     * @param userId
     */
    void resetPwd(String userId);
}
